//
//  LGSSelectNodeTypeSheetController.h
//  LogicSim
//
//  Created by Jeremy Pereira on 29/04/2012.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

/*!
 *  @file
 *  @brief A controller for selecting a node type.
 *  @author Jeremy Pereira
 */
#import <Foundation/Foundation.h>
#import "LGSNodeTypeSelectorDelegate.h"

/*!
 *  @brief A controller for selecting a node type.
 */
@interface LGSSelectNodeTypeSheetController : NSObject
/*!
 *  @brief The window that this controller controls.
 */
@property (strong) IBOutlet NSWindow* selectNodeTypeSheet;
/*!
 *  @brief The selector list containing a list of node types.
 */
@property (strong) IBOutlet NSPopUpButton* nodeTypeListSelector;
/*!
 *  @brief show the select a node type window attached as a sheet to the 
 *  specified window.  
 *
 *  The list of node types is obtained from LGSNode.
 *
 *  @param newDelegate Delegate for this object.
 */
-(void) showWithDelegate: (id<LGSNodeTypeSelectorDelegate>) newDelegate;

/*!
 * @brief The delegate for this sheet controller.
 *
 * The delegate is the objet that is queried for the different node types and
 * also the object to which  the results are sent.
 */
@property (readonly, weak) id<LGSNodeTypeSelectorDelegate> delegate;

/*!
 *  @brief Action sent when the close button is pressed.
 *  @param sender object sending the action.
 *  @return nothing.
 */
-(IBAction) closeSheet: (id)sender;
/*!
 *  @brief Action sent when the cancel button is pressed.
 *  @param sender object sending the action.
 *  @return nothing.
 */
-(IBAction) cancelSheet: (id)sender;

@end
